Continuing advances in storage technology provide significant amounts of digital data to be stored cheaply and efficiently. However, there are many situations where data (e.g., user data or corporate data) needs to be stored in a database or in a data storage for a significant amount of time, such as years or even decades. For example, in the United States, certain federal and state laws require that all medical institutions store medical data (e.g., medical history, medical care, regular check-ups and monitoring, etc.) on patients during his or her lifetime, or even longer. Moreover, similar requirements apply to banking and financial institutions. For example, according to international rules (e.g., the Basel Agreement), banks are required to keep all financial information for a certain period of time (e.g., data relating to accounts, customers, performed transactions and other information about movement of funds, etc.). In these situations, financial, medical and other organizations are required to store huge amounts of data.
Being required to store large amounts of data for long periods of time creates problems in that it is necessary not only to preserve this information, but also to ensure the integrity and authenticity. Moreover, over long periods of time, the data may be subject to a number of threats, including, for example, potential damage by software and/or hardware failure, accidental and/or intentional removal or modification, modification or tampering by fraudsters, and the like.
Therefore, storing such large volumes of data presents a separate issue of checking the integrity of the stored data (i.e., integrity check). Since the number of stored data objects can be very large, the checking procedures (e.g., audits) of the data by third parties, such as services of financial monitoring or control, is usually quite time-consuming and expensive. This is so since the confirming of the data may require a third party (e.g., bank) to be involved, which is trusted by all parties and which guarantees the safety of the information, but also significantly increases the cost through such services.
One existing technology that is capable of storing large volumes of transactional data is blockchain technology. In general, blockchain technology is most widely known as the technology behind the popular cryptocurrency, Bitcoin. A blockchain creates a history of data deposits, messages, or transactions in a series of blocks where each block contains a mathematical summary, called a hash, of the previous block. In turn, this process creates a chain where any changes made to a block will change that block's hash, which must be recomputed and stored in the next block. This changes the hash of the next block, which must also be recomputed and so on until the end of the chain.
Although the hash is simple to compute, there are rules imposed which require the value of the hash to be below a certain threshold value. In addition, the hash is based on a special type of mathematical function that is not reversible (i.e., it cannot be predicted what input can be used to produce the desired output). A valid hash is found by repeatedly adjusting a changeable value in the block, and recalculating the hash until it meets the validity requirements. The freely changeable value is called the nonce. The unpredictable nature of the hash considerably increases the difficulty of finding a nonce that produces a valid hash of the block. Typically, trillions of different nonces must be tried before a valid hash is found. Therefore, changing the value of previously stored data in the blockchain is computationally very expensive.
The security of a blockchain is further increased by implementing it on a distributed network. Blockchains on a distributed network with sufficiently restrictive rules for creating valid blocks are fairly secure against unauthorized changes to the data stored in them. This makes blockchains particularly useful for recording financial transactions.